//
// Created by Jisam on 10/10/2024 19:05.
// Solution of  P1216 [USACO1.5] [IOI1994] 数字三角形 Number Triangles
// 2024-10-10 19:14:01 AC 100 线性DP
#include <bits/stdc++.h>

#define  int long long
#define  endl "\n"
#define  all(x) (x).begin(),(x).end()
#define  pb push_back
using namespace std;


signed main() {
    // 优化标准输入流，提高输入效率
    cin.tie(nullptr)->sync_with_stdio(false);

    // 定义变量n，用于存储数组的大小
    int n;
    // 从标准输入流读取n的值
    cin >> n;

    // 初始化一个大小为(n+1)x(n+1)的二维向量a，所有元素初始值为0
    vector<vector<int>> a(n + 1, vector<int>(n + 1, 0));

    // 读取输入数据，填充二维向量a的下半三角部分
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            cin >> a[i][j];
        }
    }

    // 从倒数第三行开始，逐行逐列计算累加最大值
    for(int i = n - 2; i >= 0; i--) {
        for(int j = 0; j <= i; j++) {
            // 每个元素的值加上其下一行同列和后一列元素中的较大值
            a[i][j] += max(a[i + 1][j], a[i + 1][j + 1]);
        }
    }

    // 输出计算结果，即最大累加值
    cout << a[0][0] << endl;
    return 0;
}